/**
  @file     LibSVMClassifier.h
  @date     2010/09/08
  @author   sang-soo kim
  @brief    libsvm을 사용하기 위한 interface   
            svmlight등이 있으나, libsvm이 bsd라이센스임으로 libsvm을 추천
*/


#if !defined(__LIB_SVM_CLASSIFY_H__)
#define __LIB_SVM_CLASSIFY_H__

#ifdef __cplusplus
extern "C" {
#endif

# include "svm.h"

#ifdef __cplusplus
}
#endif
#include <string>
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <iostream>
#include <stdio.h>

// feature 차원의 개수를 지정
// 전체 차원의 수가 아니라.. 하나의 데이터가 가지고 있는 차원의 수를 의미한다.
#define SVM_MAX_WORDS	1024


class LibSVMClassifier
{
	svm_node *x;
	int max_nr_attr;
	svm_model* model;
	int predict_probability;
	int svm_type;
	int nr_class;

public:
	LibSVMClassifier();
	void setParamters( int pred_prob );
	LibSVMClassifier(const LibSVMClassifier &obj);
	void exit_input_error(int line_num);

	double classify( std::string  feature);
	void loadModel(std::string fileName);
	virtual ~LibSVMClassifier();
};


#endif

